Para verificar os atributos use.
getItemAttribute(pb.uid, "atributo")
Por Weverton Siri, 12 de jul. de 2017 em Tópicos Sem Resposta
info
Grupo: Campones
Registrado: 17/06/09
Posts: 75
Reputação: +13
Gênero: Masculino

Para verificar os atributos use.
getItemAttribute(pb.uid, "atributo")
info
Grupo: Campones
Registrado: 05/06/17
Posts: 49
Reputação: 0

12 horas atrás, klipstyle disse:Para verificar os atributos use.
getItemAttribute(pb.uid, "atributo")
fiz assim, mas deu erro no move 1.lua
elseif spell == "Mega Destruction" then
local pb = getPlayerSlotItem(cid, 8)
if (getItemAttribute(pb.uid, "megaspell1") == 1) then
spell = "Leaf Storm"
end
erro
[13/07/2017 21:50:12] [Error - TalkAction Interface]
[13/07/2017 21:50:12] data/talkactions/scripts/move1.lua:onSay
[13/07/2017 21:50:12] Description:
[13/07/2017 21:50:12] (luaGetPlayerSlotItem) Player not found
[13/07/2017 21:50:12] [Error - TalkAction Interface]
[13/07/2017 21:50:12] data/talkactions/scripts/move1.lua:onSay
[13/07/2017 21:50:12] Description:
[13/07/2017 21:50:12] (luaGetItemAttribute) Item not found
Move1.lua
local msgs = {"use ", ""}
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
return true
end
end
end
function onSay(cid, words, param, channel)
if param ~= "" then return true end
if string.len(words) > 3 then return true end
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
local mypoke = getCreatureSummons(cid)[1]
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
name = getPlayerStorageValue(mypoke, 1010) --edited
else
name = getCreatureName(mypoke)
end
local it = string.sub(words, 2, 3)
local idd = getPlayerSlotItem(cid, 8).uid
local move = (getCreatureName(mypoke) == "Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1) or (getCreatureName(mypoke) == "Shiny Smeargle" and getItemAttribute(idd, "skt1") and movestable[getItemAttribute(idd, "skt1")].move1 or movestable[name].move1)
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it..""
end
if it == "2" then
if getItemAttribute(idd, "skt2") then
move = movestable[getItemAttribute(idd, "skt2")].move2
else
move = movestable[name].move2
end
elseif it == "3" then
if getItemAttribute(idd, "skt3") then
move = movestable[getItemAttribute(idd, "skt3")].move3
else
move = movestable[name].move3
end
elseif it == "4" then
if getItemAttribute(idd, "skt4") then
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end
elseif it == "4" then
if getItemAttribute(idd, "skt4") then
move = movestable[getItemAttribute(idd, "skt4")].move4
else
move = movestable[name].move4
end
elseif it == "5" then
if getItemAttribute(idd, "skt5") then
move = movestable[getItemAttribute(idd, "skt5")].move5
else
move = movestable[name].move5
end
elseif it == "6" then
if getItemAttribute(idd, "skt6") then
move = movestable[getItemAttribute(idd, "skt6")].move6
else
move = movestable[name].move6
end
elseif it == "7" then
if getItemAttribute(idd, "skt7") then
move = movestable[getItemAttribute(idd, "skt7")].move7
else
move = movestable[name].move7
end
elseif it == "8" then
if getItemAttribute(idd, "skt8") then
move = movestable[getItemAttribute(idd, "skt8")].move8
else
move = movestable[name].move8
end
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end
if not move then
local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone")
if not isMega or name:find("Mega") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
local moveTable, index = getNewMoveTable(movestable[name]), 0
for i = 1, 12 do
if not moveTable then
index = i
break
end
end
if tonumber(it) ~= index then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
local needCds = false --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown.
if needCds then
for i = 1, 12 do
if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then
return doPlayerSendCancel(cid, "para mega evoluir os cds do pokemon devem estar carregados.")
end
end
end
move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}
end
if getPlayerLevel(cid) < move.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
return true
end
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
return true
end
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return true
end
if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
end
if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return true
end
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then
local target = getCreatureTarget(cid)
if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then
if isCreature(getMasterTarget(target)) then --alterado v1.6
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))
return true --alterado v1.6
end
end
end
if move.target == 1 then
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
return 0
end
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
local newid = 0
if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"
if move.name == "Mega Evolution" then
spellMessage = "Mega Evolve!"
end
doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY)
local summons = getCreatureSummons(cid) --alterado v1.6
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
for i = 2, #summons do
if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons, move.name) --alterado v1.6
end
end
docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
if useKpdoDlls then
doUpdateCooldowns(cid)
end
return 0
end
Editado Julho 13 por Weverton Siri
info
Grupo: Campones
Registrado: 17/06/09
Posts: 75
Reputação: +13
Gênero: Masculino

se você esta editando pokemon moves.lua
cid = pokemon
use desta maneira.
local pb = getPlayerSlotItem(getCreatureMaster(cid), 8)
Editado Julho 14 por klipstyle
info
Grupo: Campones
Registrado: 05/06/17
Posts: 49
Reputação: 0

Em 14/07/2017 at 16:22, klipstyle disse:se você esta editando pokemon moves.lua
cid = pokemon
use desta maneira.
local pb = getPlayerSlotItem(getCreatureMaster(cid), 8)
script ficou assim
elseif spell == "Mega Destruction" then
local pb = getPlayerSlotItem(getCreatureMaster(cid), 8)
if (getItemAttribute(pb.uid, "megaspell1") == 1) then
spell = "Leaf Storm"
end
e deu o mesmo erro
[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetCreatureMaster) Creature not found
[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetPlayerSlotItem) Player not found
[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetItemAttribute) Item not found
o move1.lua eu ja postei acima
deste jeito ela esta funcionando porem apenas o ADM pode usar
PARA FUNCIONAR ELA DEVE ESTAR REGISTRADA
NO SPELLS.XML
COM A SEGUINTE TAG, ALEM DISSO ELE N PODE TER UM NOME, E NEM ESTAR REGISTRADO NO POKEMON MOVES.LUA
<instant name="" words="megaspell1" lvl="1" mana="0" aggressive="1" event="script" exausted="100" value="megaspell1.lua"></instant>
function onCastSpell(cid, var)
local mypoke = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8)
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return true
end
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
end
if exhaustion.get(cid, 60029) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait 47 seconds to use this move again.")
return true
end
if (getItemAttribute(pb.uid, "megaspell1") == 1) then
doCreatureSay(mypoke, "LEAF STORM!", TALKTYPE_MONSTER)
docastspell(mypoke, "Leaf Storm")
exhaustion.set(cid, 60029, 47)
doCreatureSay(cid, ""..getPokeName(mypoke)..", use Leaf Storm!", TALKTYPE_MONSTER)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
return true
end
uma coisinha, eu gostaria de saber como eu coloco isso no pokemon moves.lua
exemplo:
elseif spell == "Mega Destruction" then
doCreatureSay(cid, "chuva de pétalas") ---sendo que quem deve dizer chuva de pétalas é o player e não o pokemon, do jeito que eu coloquei é o pokemon quem diz isso
Editado Julho 18 por Weverton Siri
Em 14/07/2017 at 19:43, Weverton Siri disse:
script ficou assim
elseif spell == "Mega Destruction" then
local pb = getPlayerSlotItem(getCreatureMaster(cid), 8)
if (getItemAttribute(pb.uid, "megaspell1") == 1) then
spell = "Leaf Storm"
ende deu o mesmo erro
[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetCreatureMaster) Creature not found[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetPlayerSlotItem) Player not found[14/07/2017 19:33:57] [Error - TalkAction Interface]
[14/07/2017 19:33:57] data/talkactions/scripts/move1.lua:onSay
[14/07/2017 19:33:57] Description:
[14/07/2017 19:33:57] (luaGetItemAttribute) Item not found
o move1.lua eu ja postei acima
deste jeito ela esta funcionando porem apenas o ADM pode usarPARA FUNCIONAR ELA DEVE ESTAR REGISTRADA
NO SPELLS.XML
COM A SEGUINTE TAG, ALEM DISSO ELE N PODE TER UM NOME, E NEM ESTAR REGISTRADO NO POKEMON MOVES.LUA
<instant name="" words="megaspell1" lvl="1" mana="0" aggressive="1" event="script" exausted="100" value="megaspell1.lua"></instant>function onCastSpell(cid, var)
local mypoke = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8)if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return true
endif getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
endif exhaustion.get(cid, 60029) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait 47 seconds to use this move again.")
return true
endif (getItemAttribute(pb.uid, "megaspell1") == 1) then
doCreatureSay(mypoke, "LEAF STORM!", TALKTYPE_MONSTER)
docastspell(mypoke, "Leaf Storm")
exhaustion.set(cid, 60029, 47)
doCreatureSay(cid, ""..getPokeName(mypoke)..", use Leaf Storm!", TALKTYPE_MONSTER)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
endreturn true
end
uma coisinha, eu gostaria de saber como eu coloco isso no pokemon moves.lua
exemplo:
elseif spell == "Mega Destruction" thendoCreatureSay(cid, "chuva de pétalas") ---sendo que quem deve dizer chuva de pétalas é o player e não o pokemon, do jeito que eu coloquei é o pokemon quem diz isso
elseif spell == "Mega Destruction" then local pb = getPlayerSlotItem(getCreatureMaster(cid), 8) if getItemAttribute(pb.uid, "megaspell1") then spell = "Leaf Storm" end
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

info
Grupo: Campones
Registrado: 05/06/17
Posts: 49
Reputação: 0
então eu gostaria de uma spell que verifique o atributo da pokeball (no caso pokeball serve como bota equipada)
exemplo
eu irei usar a spell
"Mega Destruction"
local pb = getPlayerSlotItem(getCreatureMaster(item2.uid), 8) ---slot 8, pé
se o item tem o atributo
doItemSetAttribute(pb.uid, "megaspell1", 1) ira usar o spell "Leaf Storm"
caso tenha o atributo
doItemSetAttribute(pb.uid, "megaspell2", 1) ira usar o spell "Magma Storm"
e caso tenha o atributo
doItemSetAttribute(pb.uid, "megaspell3", 1) ira usar o spell "Shadow Storm"
e assim suscetivamente
se o item não tiver nenhum dos atributos aparece uma mensagem dizendo que o pokemon não possui mega spell
@zipter98
Editado Julho 12 por Weverton Siri